package craft;

/**
 * 由Lexer生成的Token流，提供read、peek、unread、getPosition和setPosition功能
 */
public interface TokenReader {
    /**
     * 返回并取出Token流中下一个要读取的Token
     * @return
     */
    public Token read();

    /**
     * 只返回Token流中下一个要读取的Token
     * @return
     */
    public Token peek();

    public void unread();

    /**
     * 获取Token流当前的读取位置
     * @return
     */
    public int getPosition();

    /**
     * 设置Token流当前的读取位置
     */
    public void setPosition(int position);
}
